| 
                
               | 
              
                
               | 
              
                @@ -0,0 +1,104 @@ 
               | 
            
            
            
              | 
                
               | 
              
                1
               | 
              
                +# -*- coding: utf-8 -*- 
               | 
            
            
            
              | 
                
               | 
              
                2
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                3
               | 
              
                +from TimeConvert import TimeConvert as tc 
               | 
            
            
            
              | 
                
               | 
              
                4
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                5
               | 
              
                +from account.models import UserInfo 
               | 
            
            
            
              | 
                
               | 
              
                6
               | 
              
                +from coupon.models import CouponInfo, UserCouponInfo 
               | 
            
            
            
              | 
                
               | 
              
                7
               | 
              
                +from member.models import RightInfo 
               | 
            
            
            
              | 
                
               | 
              
                8
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                9
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                10
               | 
              
                +def fix_user_coupon_info(): 
               | 
            
            
            
              | 
                
               | 
              
                11
               | 
              
                +    rights = RightInfo.objects.filter(is_send_coupon=True, status=True) 
               | 
            
            
            
              | 
                
               | 
              
                12
               | 
              
                +    coupons = {
               | 
            
            
            
              | 
                
               | 
              
                13
               | 
              
                +        'level1': {},
               | 
            
            
            
              | 
                
               | 
              
                14
               | 
              
                +        'level2': {},
               | 
            
            
            
              | 
                
               | 
              
                15
               | 
              
                +        'level3': {},
               | 
            
            
            
              | 
                
               | 
              
                16
               | 
              
                +        'level4': {},
               | 
            
            
            
              | 
                
               | 
              
                17
               | 
              
                +        'level5': {},
               | 
            
            
            
              | 
                
               | 
              
                18
               | 
              
                +    } 
               | 
            
            
            
              | 
                
               | 
              
                19
               | 
              
                +    for right in rights: 
               | 
            
            
            
              | 
                
               | 
              
                20
               | 
              
                +        if right.coupon_level1_id: 
               | 
            
            
            
              | 
                
               | 
              
                21
               | 
              
                +            if right.coupon_level1_id not in coupons['level1']: 
               | 
            
            
            
              | 
                
               | 
              
                22
               | 
              
                +                coupons['level1'][right.coupon_level1_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                23
               | 
              
                +            coupons['level1'][right.coupon_level1_id] += right.coupon_level1_num 
               | 
            
            
            
              | 
                
               | 
              
                24
               | 
              
                +            if right.coupon_level1_id not in coupons['level2']: 
               | 
            
            
            
              | 
                
               | 
              
                25
               | 
              
                +                coupons['level2'][right.coupon_level1_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                26
               | 
              
                +            coupons['level2'][right.coupon_level1_id] += right.coupon_level1_num 
               | 
            
            
            
              | 
                
               | 
              
                27
               | 
              
                +            if right.coupon_level1_id not in coupons['level3']: 
               | 
            
            
            
              | 
                
               | 
              
                28
               | 
              
                +                coupons['level3'][right.coupon_level1_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                29
               | 
              
                +            coupons['level3'][right.coupon_level1_id] += right.coupon_level1_num 
               | 
            
            
            
              | 
                
               | 
              
                30
               | 
              
                +            if right.coupon_level1_id not in coupons['level4']: 
               | 
            
            
            
              | 
                
               | 
              
                31
               | 
              
                +                coupons['level4'][right.coupon_level1_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                32
               | 
              
                +            coupons['level4'][right.coupon_level1_id] += right.coupon_level1_num 
               | 
            
            
            
              | 
                
               | 
              
                33
               | 
              
                +            if right.coupon_level1_id not in coupons['level5']: 
               | 
            
            
            
              | 
                
               | 
              
                34
               | 
              
                +                coupons['level5'][right.coupon_level1_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                35
               | 
              
                +            coupons['level5'][right.coupon_level1_id] += right.coupon_level1_num 
               | 
            
            
            
              | 
                
               | 
              
                36
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                37
               | 
              
                +        if right.coupon_level2_id: 
               | 
            
            
            
              | 
                
               | 
              
                38
               | 
              
                +            if right.coupon_level2_id not in coupons['level2']: 
               | 
            
            
            
              | 
                
               | 
              
                39
               | 
              
                +                coupons['level2'][right.coupon_level2_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                40
               | 
              
                +            coupons['level2'][right.coupon_level2_id] += right.coupon_level2_num 
               | 
            
            
            
              | 
                
               | 
              
                41
               | 
              
                +            if right.coupon_level2_id not in coupons['level3']: 
               | 
            
            
            
              | 
                
               | 
              
                42
               | 
              
                +                coupons['level3'][right.coupon_level2_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                43
               | 
              
                +            coupons['level3'][right.coupon_level2_id] += right.coupon_level2_num 
               | 
            
            
            
              | 
                
               | 
              
                44
               | 
              
                +            if right.coupon_level2_id not in coupons['level4']: 
               | 
            
            
            
              | 
                
               | 
              
                45
               | 
              
                +                coupons['level4'][right.coupon_level2_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                46
               | 
              
                +            coupons['level4'][right.coupon_level2_id] += right.coupon_level2_num 
               | 
            
            
            
              | 
                
               | 
              
                47
               | 
              
                +            if right.coupon_level2_id not in coupons['level5']: 
               | 
            
            
            
              | 
                
               | 
              
                48
               | 
              
                +                coupons['level5'][right.coupon_level2_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                49
               | 
              
                +            coupons['level5'][right.coupon_level2_id] += right.coupon_level2_num 
               | 
            
            
            
              | 
                
               | 
              
                50
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                51
               | 
              
                +        if right.coupon_level3_id: 
               | 
            
            
            
              | 
                
               | 
              
                52
               | 
              
                +            if right.coupon_level3_id not in coupons['level3']: 
               | 
            
            
            
              | 
                
               | 
              
                53
               | 
              
                +                coupons['level3'][right.coupon_level3_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                54
               | 
              
                +            coupons['level3'][right.coupon_level3_id] += right.coupon_level3_num 
               | 
            
            
            
              | 
                
               | 
              
                55
               | 
              
                +            if right.coupon_level3_id not in coupons['level4']: 
               | 
            
            
            
              | 
                
               | 
              
                56
               | 
              
                +                coupons['level4'][right.coupon_level3_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                57
               | 
              
                +            coupons['level4'][right.coupon_level3_id] += right.coupon_level3_num 
               | 
            
            
            
              | 
                
               | 
              
                58
               | 
              
                +            if right.coupon_level3_id not in coupons['level5']: 
               | 
            
            
            
              | 
                
               | 
              
                59
               | 
              
                +                coupons['level5'][right.coupon_level3_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                60
               | 
              
                +            coupons['level5'][right.coupon_level3_id] += right.coupon_level3_num 
               | 
            
            
            
              | 
                
               | 
              
                61
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                62
               | 
              
                +        if right.coupon_level4_id: 
               | 
            
            
            
              | 
                
               | 
              
                63
               | 
              
                +            if right.coupon_level4_id not in coupons['level4']: 
               | 
            
            
            
              | 
                
               | 
              
                64
               | 
              
                +                coupons['level4'][right.coupon_level4_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                65
               | 
              
                +            coupons['level4'][right.coupon_level4_id] += right.coupon_level4_num 
               | 
            
            
            
              | 
                
               | 
              
                66
               | 
              
                +            if right.coupon_level4_id not in coupons['level5']: 
               | 
            
            
            
              | 
                
               | 
              
                67
               | 
              
                +                coupons['level5'][right.coupon_level4_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                68
               | 
              
                +            coupons['level5'][right.coupon_level4_id] += right.coupon_level4_num 
               | 
            
            
            
              | 
                
               | 
              
                69
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                70
               | 
              
                +        if right.coupon_level5_id: 
               | 
            
            
            
              | 
                
               | 
              
                71
               | 
              
                +            if right.coupon_level5_id not in coupons['level5']: 
               | 
            
            
            
              | 
                
               | 
              
                72
               | 
              
                +                coupons['level5'][right.coupon_level5_id] = 0 
               | 
            
            
            
              | 
                
               | 
              
                73
               | 
              
                +            coupons['level5'][right.coupon_level5_id] += right.coupon_level5_num 
               | 
            
            
            
              | 
                
               | 
              
                74
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                75
               | 
              
                +    users = UserInfo.objects.filter(level__gte=1, status=True) 
               | 
            
            
            
              | 
                
               | 
              
                76
               | 
              
                +    for user in users: 
               | 
            
            
            
              | 
                
               | 
              
                77
               | 
              
                +        level_coupon = coupons.get('level{}'.format(user.level))
               | 
            
            
            
              | 
                
               | 
              
                78
               | 
              
                +        for coupon_id, coupon_num in level_coupon.items(): 
               | 
            
            
            
              | 
                
               | 
              
                79
               | 
              
                +            real_coupon_num = UserCouponInfo.objects.filter(user_id=user.user_id, coupon_id=coupon_id).count() 
               | 
            
            
            
              | 
                
               | 
              
                80
               | 
              
                +            if real_coupon_num >= coupon_num: 
               | 
            
            
            
              | 
                
               | 
              
                81
               | 
              
                +                continue 
               | 
            
            
            
              | 
                
               | 
              
                82
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                83
               | 
              
                +            print(user.user_id, coupon_id, coupon_num - real_coupon_num) 
               | 
            
            
            
              | 
                
               | 
              
                84
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                85
               | 
              
                +            try: 
               | 
            
            
            
              | 
                
               | 
              
                86
               | 
              
                +                coupon = CouponInfo.objects.get(coupon_id=coupon_id) 
               | 
            
            
            
              | 
                
               | 
              
                87
               | 
              
                +            except CouponInfo.DoesNotExist: 
               | 
            
            
            
              | 
                
               | 
              
                88
               | 
              
                +                continue 
               | 
            
            
            
              | 
                
               | 
              
                89
               | 
              
                + 
               | 
            
            
            
              | 
                
               | 
              
                90
               | 
              
                +            for _ in range(coupon_num - real_coupon_num): 
               | 
            
            
            
              | 
                
               | 
              
                91
               | 
              
                +                UserCouponInfo.objects.create( 
               | 
            
            
            
              | 
                
               | 
              
                92
               | 
              
                +                    brand_id=coupon.brand_id, 
               | 
            
            
            
              | 
                
               | 
              
                93
               | 
              
                +                    brand_name=coupon.brand_name, 
               | 
            
            
            
              | 
                
               | 
              
                94
               | 
              
                +                    coupon_id=coupon_id, 
               | 
            
            
            
              | 
                
               | 
              
                95
               | 
              
                +                    user_id=user.user_id, 
               | 
            
            
            
              | 
                
               | 
              
                96
               | 
              
                +                    coupon_title=coupon.coupon_title, 
               | 
            
            
            
              | 
                
               | 
              
                97
               | 
              
                +                    coupon_detail=coupon.coupon_detail, 
               | 
            
            
            
              | 
                
               | 
              
                98
               | 
              
                +                    coupon_value=coupon.coupon_value, 
               | 
            
            
            
              | 
                
               | 
              
                99
               | 
              
                +                    coupon_image=coupon.coupon_image, 
               | 
            
            
            
              | 
                
               | 
              
                100
               | 
              
                +                    active_at=tc.utc_datetime(), 
               | 
            
            
            
              | 
                
               | 
              
                101
               | 
              
                +                    expire_at=tc.utc_datetime(days=365), 
               | 
            
            
            
              | 
                
               | 
              
                102
               | 
              
                +                    coupon_valid_period=coupon.coupon_valid_period, 
               | 
            
            
            
              | 
                
               | 
              
                103
               | 
              
                +                    coupon_limit_model_ids=coupon.coupon_limit_model_ids, 
               | 
            
            
            
              | 
                
               | 
              
                104
               | 
              
                +                ) 
               |